#ifndef MAGAMP_H_
#define MAGAMP_H_

#include "../../SAMA_Function.h"

typedef struct {
	float Dead;									//< 死区值
	float Mag;									//< 磁放区
	float Set_Value;							//< 输出设定值
}MAGAMP_Par_t;

typedef struct {
	float Last_AI;								//< 上一时刻输入值
	float Last_AO;								//< 上一时刻输出值
	bool Add_Dir;								//< 增方向
	bool Dec_Dir;								//< 减方向
}MAGAMP_Sta_t;

struct MAGAMP_T
{
	Model_Base_t Base;							//< 模块基本参数结构体
	MAGAMP_Par_t Par;							//< 模块可调参数结构体
	MAGAMP_Sta_t Sta;							//< 模块运算中间参数结构体
};


extern MAGAMP_T* MAGAMP_t;


bool CALCU_SAMA(MAGAMP)(Model_Base_t* arg, float dt, bool* DI, bool* DO, float* AI, float* AO);	//< SAMA运算函数
int BC_PARA(MAGAMP)(Model_Base_t* arg, void** Data);											//< 广播SAMA参数变量函数（无参数需要广播的模块直接将BCPara函数设置为NULL即可）
int BAK_STA(MAGAMP)(Model_Base_t* arg, void** Data);											//< 备份SAMA运算中间参数
int ANA_STA(MAGAMP)(Model_Base_t* arg, void** Data);											//< 解析备份的SAMA运算中间参数
int CHANGE_PAR(MAGAMP)(Model_Base_t* arg, void** Data);											//< 在线修改模块参数函数
void INIT_STAPAR(MAGAMP)(Model_Base_t* arg);													//< 初始化模块运算中间参数


#endif
